package com.wmx.main.text02;

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

/**
 * @author:wmx 2025-03-28 11:12
 * 1、功能:
 * 2、参数{
 * <p>
 * <p>
 * }
 **/
public class Text02 {
    public static void main(String[] args) throws Exception {

        //    二、定义一个注解，只能应用在方法参数上，用于设置一个数值
        //
        //    创建一个类，在类中定义一个方法，实现计算1到n的和,方法头如下：
        //    public int getSum(@Xxx(value=100) int n) {
        //    ...
        //    }

        //
        //    在getSum方法中，使用上面定义的注解，
        //    用于控制参数n的上限，如果超出n，则抛出异常提示。

        Calculate calculate = new Calculate();
        Class<?> calculateClass = calculate.getClass();
        Method getSum = calculateClass.getMethod("getSum", int.class);

        Parameter[] parameters = getSum.getParameters();
        for (Parameter parameter : parameters) {
            boolean annotationPresent = parameter.isAnnotationPresent(Sum.class);
            if(!annotationPresent){
                throw new Exception("没有此注解");
            }else{
                Sum annotation = parameter.getAnnotation(Sum.class);
                System.out.println( getSum.invoke(calculate,annotation.value()));

                break;
            }
        }





    }
}
